<?php
class Curso
{
	private $idCurso;
	private $idDono;
	private $nome;
	private $nivel;
	private $areaConhecimento;
	private $logo;
	private $inicioMatricula;
	private $terminoMatricula;
	private $inicioCurso;
	private $terminoCurso;
	private $dataCriacao;
	private $liberado;
	private $idLayout;
	private $apagado;
	private $vagas;
	private $publicoAlvo;
	private $objetivos;
	private $ementa;
	private $orientacoes;
	private $cronograma;
	private $exibirGlossario;
	private $exibirLinks;
	private $exibirBibliografia;
	private $exibirAvisos;
	private $exibirForum;
	private $exibirEmail;
	private $exibirChat;
	private $professores;
	private $turmas;
	
	/**
	 * @constructor
	 * @classDescription Funcao modelo que representa um curso.
	 * @param int $idCurso
	 */
	public function Curso($idCurso){
		$strQuery	=	"SELECT * FROM cursos WHERE idCurso=" . $idCurso . ";";
		if ($resultado	=	BancoDados::query($strQuery)){
			$this->setIdCurso($idCurso);
			$this->setIdDono($resultado[0]['idDono']);
			$this->setNome($resultado[0]['nome']);
			$this->setNivel($resultado[0]['nivel']);
			$this->setAreaConhecimento($resultado[0]['idArea']);
			$this->setLogo($resultado[0]['logo']);
			$this->setInicioMatricula($resultado[0]['inicioMatricula']);
			$this->setTerminoMatricula($resultado[0]['terminoMatricula']);
			$this->setInicioCurso($resultado[0]['inicioCurso']);
			$this->setTerminoCurso($resultado[0]['terminoCurso']);
			$this->setDataCriacao($resultado[0]['dataCriacao']);
			$this->setLiberado($resultado[0]['liberado']);
			$this->setIdLayout($resultado[0]['idLayout']);
			$this->setApagado($resultado[0]['apagado']);
			$this->setVagas($resultado[0]['vagas']);
			$this->setPublicoAlvo($resultado[0]['publicoAlvo']);
			$this->setObjetivos($resultado[0]['objetivos']);
			$this->setEmenta($resultado[0]['ementa']);
			$this->setOrientacoes($resultado[0]['orientacao']);
			$this->setCronograma($resultado[0]['cronograma']);
			$this->setExibirGlossario($resultado[0]['exibirGlossario']);
			$this->setExibirLinks($resultado[0]['exibirLinks']);
			$this->setExibirBibliografia($resultado[0]['exibirBibliografia']);
			$this->setExibirAvisos($resultado[0]['exibirAvisos']);
			$this->setExibirForum($resultado[0]['exibirForum']);
			$this->setExibirEmail($resultado[0]['exibirEmail']);
			$this->setExibirChat($resultado[0]['exibirChat']);
			$this->turmas		=	array();
			$this->professores	=	array();
			$strQuery	=	"SELECT * FROM turmas WHERE idCurso = " . $idCurso . ";";
			if ($turmas	=	BancoDados::query($strQuery)){
				foreach($turmas as $turma){
					$this->adicionaTurma($turma['idTurma'], $turma['nome']);
					
					$strQuery	=	"SELECT usuariosTurmas.idUsuario as idProfessor, usuariosTurmas.exibirEmailProfessor, usuariosTurmas.exibirEnderecoProfessor, usuariosTurmas.exibirTelefoneProfessor, usuarios.nome, usuarios.email, dadosProfessores.enderecoInstitucional, dadosProfessores.telefoneInstitucional  FROM usuariosTurmas, usuarios, dadosProfessores WHERE usuariosTurmas.idTurma=" . $turma['idTurma'] . " AND usuariosTurmas.funcaoUsuario='professor' AND usuariosTurmas.idUsuario = usuarios.idUsuario AND usuariosTurmas.idUsuario = dadosProfessores.idUsuario AND usuarios.idUsuario = dadosProfessores.idUsuario;";
					if ($professores	=	BancoDados::query($strQuery)){
						foreach($professores as $professor){
							$this->adicionaProfessor($professor['idProfessor'], $professor['nome'], $professor['exibirEmailProfessor'], $professor['exibirEnderecoProfessor'], $professor['exibirTelefoneProfessor'], $professor['email'], $professor['enderecoInstitucional'],  $professor['telefoneInstitucional'], $turma['idTurma']);
						}
					}
					else {
						$this->setIdCurso(null);
					}
					
				}
			}
			else{
				$this->setIdCurso(null);
			}
		}
	}
	
    /**
     * Returns $apagado.
     * @see Curso::$apagado
     */
    public function getApagado()
    {
        return $this->apagado;
    }
    
    /**
     * Sets $apagado.
     * @param object $apagado
     * @see Curso::$apagado
     */
    public function setApagado($apagado)
    {
        $this->apagado = $apagado;
    }
    
    /**
     * Returns $cronograma.
     * @see Curso::$cronograma
     */
    public function getCronograma()
    {
        return $this->cronograma;
    }
    
    /**
     * Sets $cronograma.
     * @param object $cronograma
     * @see Curso::$cronograma
     */
    public function setCronograma($cronograma)
    {
        $this->cronograma = $cronograma;
    }
    
    /**
     * Returns $dataCriacao.
     * @see Curso::$dataCriacao
     */
    public function getDataCriacao()
    {
        return $this->dataCriacao;
    }
    
    /**
     * Sets $dataCriacao.
     * @param object $dataCriacao
     * @see Curso::$dataCriacao
     */
    public function setDataCriacao($dataCriacao)
    {
        $this->dataCriacao = $dataCriacao;
    }
    
    /**
     * Returns $ementa.
     * @see Curso::$ementa
     */
    public function getEmenta()
    {
        return $this->ementa;
    }
    
    /**
     * Sets $ementa.
     * @param object $ementa
     * @see Curso::$ementa
     */
    public function setEmenta($ementa)
    {
        $this->ementa = $ementa;
    }
    
    /**
     * Returns $exibirAvisos.
     * @see Curso::$exibirAvisos
     */
    public function getExibirAvisos()
    {
        return $this->exibirAvisos;
    }
    
    /**
     * Sets $exibirAvisos.
     * @param object $exibirAvisos
     * @see Curso::$exibirAvisos
     */
    public function setExibirAvisos($exibirAvisos)
    {
        $this->exibirAvisos = $exibirAvisos;
    }
    
    /**
     * Returns $exibirBibliografia.
     * @see Curso::$exibirBibliografia
     */
    public function getExibirBibliografia()
    {
        return $this->exibirBibliografia;
    }
    
    /**
     * Sets $exibirBibliografia.
     * @param object $exibirBibliografia
     * @see Curso::$exibirBibliografia
     */
    public function setExibirBibliografia($exibirBibliografia)
    {
        $this->exibirBibliografia = $exibirBibliografia;
    }
    
    /**
     * Returns $exibirChat.
     * @see Curso::$exibirChat
     */
    public function getExibirChat()
    {
        return $this->exibirChat;
    }
    
    /**
     * Sets $exibirChat.
     * @param object $exibirChat
     * @see Curso::$exibirChat
     */
    public function setExibirChat($exibirChat)
    {
        $this->exibirChat = $exibirChat;
    }
    
    /**
     * Returns $exibirEmail.
     * @see Curso::$exibirEmail
     */
    public function getExibirEmail()
    {
        return $this->exibirEmail;
    }
    
    /**
     * Sets $exibirEmail.
     * @param object $exibirEmail
     * @see Curso::$exibirEmail
     */
    public function setExibirEmail($exibirEmail)
    {
        $this->exibirEmail = $exibirEmail;
    }
    
    /**
     * Returns $exibirForum.
     * @see Curso::$exibirForum
     */
    public function getExibirForum()
    {
        return $this->exibirForum;
    }
    
    /**
     * Sets $exibirForum.
     * @param object $exibirForum
     * @see Curso::$exibirForum
     */
    public function setExibirForum($exibirForum)
    {
        $this->exibirForum = $exibirForum;
    }
	
    /**
     * Returns $exibirGlossario.
     * @see Curso::$exibirGlossario
     */
    public function getExibirGlossario()
    {
        return $this->exibirGlossario;
    }
    
    /**
     * Sets $exibirGlossario.
     * @param object $exibirGlossario
     * @see Curso::$exibirGlossario
     */
    public function setExibirGlossario($exibirGlossario)
    {
        $this->exibirGlossario = $exibirGlossario;
    }
    
    /**
     * Returns $exibirLinks.
     * @see Curso::$exibirLinks
     */
    public function getExibirLinks()
    {
        return $this->exibirLinks;
    }
    
    /**
     * Sets $exibirLinks.
     * @param object $exibirLinks
     * @see Curso::$exibirLinks
     */
    public function setExibirLinks($exibirLinks)
    {
        $this->exibirLinks = $exibirLinks;
    }
    
    /**
     * Returns $idCurso.
     * @see Curso::$idCurso
     */
    public function getIdCurso()
    {
        return $this->idCurso;
    }
    
    /**
     * Sets $idCurso.
     * @param object $idCurso
     * @see Curso::$idCurso
     */
    public function setIdCurso($idCurso)
    {
        $this->idCurso = $idCurso;
    }
    
    /**
     * Returns $inicioMatricula.
     * @see Curso::$inicioMatricula
     */
    public function getInicioMatricula()
    {
        return $this->inicioMatricula;
    }
    
    /**
     * Sets $inicioMatricula.
     * @param object $inicioMatricula
     * @see Curso::$inicioMatricula
     */
    public function setInicioMatricula($inicioMatricula)
    {
        $this->inicioMatricula = $inicioMatricula;
    }
	
	 /**
     * Returns $inicioCurso.
     * @see Curso::$inicioMatricula
     */
    public function getInicioCurso()
    {
        return $this->inicioCurso;
    }
    
    /**
     * Sets $inicioCurso.
     * @param object $inicioCurso
     * @see Curso::$inicioCurso
     */
    public function setInicioCurso($inicioCurso)
    {
        $this->inicioCurso = $inicioCurso;
    }
    
	/**
     * Returns $terminoCurso.
     * @see Curso::$terminoCurso
     */
    public function getTerminoCurso()
    {
        return $this->terminoCurso;
    }
    
    /**
     * Sets $terminoCurso.
     * @param object $terminoCurso
     * @see Curso::$terminoCurso
     */
    public function setTerminoCurso($terminoCurso)
    {
        $this->terminoCurso = $terminoCurso;
    }
	
    /**
     * Returns $idLayout.
     * @see Curso::$idLayout
     */
    public function getIdLayout()
    {
        return $this->idLayout;
    }
    
    /**
     * Sets $idLayout.
     * @param object $idLayout
     * @see Curso::$idLayout
     */
    public function setIdLayout($idLayout)
    {
        $this->idLayout = $idLayout;
    }
    
    /**
     * Returns $liberado.
     * @see Curso::$liberado
     */
    public function getLiberado()
    {
        return $this->liberado;
    }
    
    /**
     * Sets $liberado.
     * @param object $liberado
     * @see Curso::$liberado
     */
    public function setLiberado($liberado)
    {
        $this->liberado = $liberado;
    }
    
    /**
     * Returns $logo.
     * @see Curso::$logo
     */
    public function getLogo()
    {
        return $this->logo;
    }
    
    /**
     * Sets $logo.
     * @param object $logo
     * @see Curso::$logo
     */
    public function setLogo($logo)
    {
        $this->logo = $logo;
    }
    
    /**
     * Returns $nome.
     * @see Curso::$nome
     */
    public function getNome()
    {
        return $this->nome;
    }
    
    /**
     * Sets $nome.
     * @param object $nome
     * @see Curso::$nome
     */
    public function setNome($nome)
    {
        $this->nome = $nome;
    }
	
	/**
     * Returns $idDono.
     * @see Curso::$idDono
     */
    public function getIdDono()
    {
        return $this->idDono;
    }
    
    /**
     * Sets $idDono.
     * @param object $idDono
     * @see Curso::$idDono
     */
    public function setIdDono($idDono)
    {
        $this->idDono = $idDono;
    }
	
	 /**
     * Returns $nivel.
     * @see Curso::$nivel
     */
    public function getNivel()
    {
        return $this->nivel;
    }
    
    /**
     * Sets $nivel.
     * @param object $nivel
     * @see Curso::$nivel
     */
    public function setNivel($nivel)
    {
        $this->nivel = $nivel;
    }
	
	/**
     * Returns $areaConhecimento.
     * @see Curso::$areaConhecimento
     */
    public function getAreaConhecimento()
    {
        return $this->areaConhecimento;
    }
    
    /**
     * Sets $areaConhecimento.
     * @param object $areaConhecimento
     * @see Curso::$areaConhecimento
     */
    public function setAreaConhecimento($areaConhecimento)
    {
        $this->areaConhecimento = $areaConhecimento;
    }
    
    /**
     * Returns $objetivos.
     * @see Curso::$objetivos
     */
    public function getObjetivos()
    {
        return $this->objetivos;
    }
    
    /**
     * Sets $objetivos.
     * @param object $objetivos
     * @see Curso::$objetivos
     */
    public function setObjetivos($objetivos)
    {
        $this->objetivos = $objetivos;
    }
    
    /**
     * Returns $orientacoes.
     * @see Curso::$orientacoes
     */
    public function getOrientacoes()
    {
        return $this->orientacoes;
    }
    
    /**
     * Sets $orientacoes.
     * @param object $orientacoes
     * @see Curso::$orientacoes
     */
    public function setOrientacoes($orientacoes)
    {
        $this->orientacoes = $orientacoes;
    }
    
    /**
     * Returns $publicoAlvo.
     * @see Curso::$publicoAlvo
     */
    public function getPublicoAlvo()
    {
        return $this->publicoAlvo;
    }
    
    /**
     * Sets $publicoAlvo.
     * @param object $publicoAlvo
     * @see Curso::$publicoAlvo
     */
    public function setPublicoAlvo($publicoAlvo)
    {
        $this->publicoAlvo = $publicoAlvo;
    }
    
    /**
     * Returns $terminoMatricula.
     * @see Curso::$terminoMatricula
     */
    public function getTerminoMatricula()
    {
        return $this->terminoMatricula;
    }
    
    /**
     * Sets $terminoMatricula.
     * @param object $terminoMatricula
     * @see Curso::$terminoMatricula
     */
    public function setTerminoMatricula($terminoMatricula)
    {
        $this->terminoMatricula = $terminoMatricula;
    }
    
    /**
     * Returns $vagas.
     * @see Curso::$vagas
     */
    public function getVagas()
    {
        return $this->vagas;
    }
    
    /**
     * Sets $vagas.
     * @param object $vagas
     * @see Curso::$vagas
     */
    public function setVagas($vagas)
    {
        $this->vagas = $vagas;
    }
	
	 /**
     * Returns $professores.
     * @see Curso::$professores
     */
    public function getProfessores()
    {
        return $this->professores;
    }
    
    /**
     * Sets $professores.
     * @param object $professores
     * @see Curso::$professores
     */
    public function adicionaProfessor($idProfessor, $nome, $exibirEmailProfessor, $exibirEnderecoProfessor, $exibirTelefoneProfessor, $email, $enderecoInstitucional, $telefoneInstitucional, $idTurma)
    {	
		if (!isset($this->professores[$idProfessor])) {
		    $this->professores[$idProfessor]	=	array(	'nome'						=>	$nome,
															'exibirEmailProfessor'		=>	$exibirEmailProfessor,
															'exibirEnderecoProfessor'	=>	$exibirEnderecoProfessor,
															'exibirTelefoneProfessor'	=>	$exibirTelefoneProfessor,
															'email'						=>	$email,
															'enderecoInstitucional'		=>	$enderecoInstitucional,
															'telefoneInstitucional'		=>	$telefoneInstitucional,
															'turmas'					=>	array($idTurma));
		}
		else{
			array_push($this->professores[$idProfessor]['turmas'], $idTurma);
		}
	}

    /**
     * Returns $turmas.
     * @see Curso::$turmas
     */
    public function getTurmas()
    {
        return $this->turmas;
    }
    
    /**
     * Sets $turmas.
     * @param object $turmas
     * @see Curso::$turmas
     */
    public function adicionaTurma($idTurma, $nome)
    {
    	$this->turmas[$idTurma]	=	array('nome' => $nome);
    }
	
	
	public static function salvarPasso1($strCurso, $strNivelCurso, $intAreaConhecimento, $intInicioMatriculaDia, $intInicioMatriculaMes, $intInicioMatriculaAno, $intTerminoMatriculaDia, $intTerminoMatriculaMes, $intTerminoMatriculaAno, $intInicioCursoDia, $intInicioCursoMes, $intInicioCursoAno, $intTerminoCursoDia, $intTerminoCursoMes, $intTerminoCursoAno, $intVagas, $strPublicoAlvo, $strObjetivos, $strEmenta, $strOrientacoesAlunos, $strCronograma, $arquivoLogo, $strLogo, $idUsuario){
		if (Curso::validaPasso1($strCurso, $strNivelCurso, $intAreaConhecimento, $intInicioMatriculaDia, $intInicioMatriculaMes, $intInicioMatriculaAno, $intTerminoMatriculaDia, $intTerminoMatriculaMes, $intTerminoMatriculaAno, $intInicioCursoDia, $intInicioCursoMes, $intInicioCursoAno, $intTerminoCursoDia, $intTerminoCursoMes, $intTerminoCursoAno, $intVagas, $strPublicoAlvo, $strObjetivos, $strEmenta, $strOrientacoesAlunos, $strCronograma, $arquivoLogo, $strLogo)){			
			/*
			 * Dando LOCK nas tabelas pois selecionamos o id do último curso inserido.
			 * Ao desconectar o BD, o LOCK já é desfeito.
			 */
			$strQuery	=	"LOCK TABLES cursos WRITE, turmas WRITE;";
			if ($conexao = BancoDados::conectaBancoDados()){
				if(BancoDados::query($strQuery, $conexao)){
					if ($intVagas == ""){
						$intVagas = 'NULL';
					}
					$strQuery	=	"INSERT INTO cursos VALUES (default,". $idUsuario .", '" . $strCurso. "', '" . $strNivelCurso . "', " . $intAreaConhecimento . ", NULL, '". $intInicioMatriculaAno . "-" . $intInicioMatriculaMes . "-" . $intInicioMatriculaDia ."', '". $intTerminoMatriculaAno . "-" . $intTerminoMatriculaMes . "-" . $intTerminoMatriculaDia ."', '". $intInicioCursoAno . "-" . $intInicioCursoMes . "-" . $intInicioCursoDia ."', '". $intTerminoCursoAno . "-" . $intTerminoCursoMes . "-" . $intTerminoCursoDia ."', NOW(), 0, 1, 0, " . $intVagas . ", '" . $strPublicoAlvo . "', '" . $strObjetivos . "', '" . $strEmenta . "', '" . $strOrientacoesAlunos . "', '" . $strCronograma . "', 0, 0, 0, 0, 0, 0, 0);";
					/*
					 * Salvando o Curso no Banco de Dados.
					 */
					if(BancoDados::query($strQuery, $conexao)){
						/*
						 * Selecionando o IdCurso para salvar na usuarioscursos
						 */
						$strQuery	=	"SELECT idCurso FROM cursos ORDER BY idCurso DESC LIMIT 1;";
						
						if($resultSet = BancoDados::query($strQuery, $conexao)){
							$resultado		=	mysql_fetch_array($resultSet);
							$idCurso		=	$resultado['idCurso'];
							
							$strQuery		=	"INSERT INTO turmas VALUES (default, " . $idCurso .", NULL);";
							
							if(!($resultSet = BancoDados::query($strQuery, $conexao))){
								BancoDados::desconectaBancoDados($conexao);
								$strMensagemErro	=	'Desculpe-nos, houve um erro ao salvar seu curso no sistema.';
								$strMensagemErro2	=	'Por favor tente novamente mais tarde.';
								$strMensagemErro3	=	'Caso o problema persista contate-nos através do <a href="'. escreveLink(array("suporte")) .'">Suporte Técnico</a>.';
								$_SESSION['constructore']['mensagens']['erroCriarCurso']	=	$strMensagemErro;
								$_SESSION['constructore']['mensagens']['erroCriarCurso2']	=	$strMensagemErro2;
								$_SESSION['constructore']['mensagens']['erroCriarCurso3']	=	$strMensagemErro3;
								return false;
							}
							
							$strQuery	=	"SELECT idTurma FROM turmas ORDER BY idTurma DESC LIMIT 1;";
						
							if(!($resultSet = BancoDados::query($strQuery, $conexao))){
								BancoDados::desconectaBancoDados($conexao);
								$strMensagemErro	=	'Desculpe-nos, houve um erro ao salvar seu curso no sistema.';
								$strMensagemErro2	=	'Por favor tente novamente mais tarde.';
								$strMensagemErro3	=	'Caso o problema persista contate-nos através do <a href="'. escreveLink(array("suporte")) .'">Suporte Técnico</a>.';
								$_SESSION['constructore']['mensagens']['erroCriarCurso']	=	$strMensagemErro;
								$_SESSION['constructore']['mensagens']['erroCriarCurso2']	=	$strMensagemErro2;
								$_SESSION['constructore']['mensagens']['erroCriarCurso3']	=	$strMensagemErro3;
								return false;
							}
							$resultado		=	mysql_fetch_array($resultSet);
							$idTurma		=	$resultado['idTurma'];
							
							
							$strQuery	=	"UNLOCK TABLES;";
							if(!BancoDados::query($strQuery, $conexao)){
								BancoDados::desconectaBancoDados($conexao);
								if (!($conexao = BancoDados::conectaBancoDados())){
									BancoDados::desconectaBancoDados($conexao);
									$strMensagemErro	=	'Desculpe-nos, houve um erro ao salvar seu curso no sistema.';
									$strMensagemErro2	=	'Por favor tente novamente mais tarde.';
									$strMensagemErro3	=	'Caso o problema persista contate-nos através do <a href="'. escreveLink(array("suporte")) .'">Suporte Técnico</a>.';
									$_SESSION['constructore']['mensagens']['erroCriarCurso']	=	$strMensagemErro;
									$_SESSION['constructore']['mensagens']['erroCriarCurso2']	=	$strMensagemErro2;
									$_SESSION['constructore']['mensagens']['erroCriarCurso3']	=	$strMensagemErro3;
									return false;
								}
							}
							
							
							
							$strQuery	=	"INSERT INTO usuariosTurmas VALUES (" . $idTurma . ", " . $idUsuario . ", 'professor', NOW(), 1, NOW(), NULL, 0, 0, 0);";
							
							if(BancoDados::query($strQuery, $conexao)){
								if ($arquivoLogo){
									$extensao		=	array_pop(explode('.', $strLogo));
									$nomeLogo		=	'curso' . $idCurso . '.' . $extensao;
									$caminhoLogo	=	__CAMINHO_LOGO_CURSO__ . $nomeLogo;
									
									if (move_uploaded_file($arquivoLogo['tmp_name'], $caminhoLogo)){
											$strQuery	=	"UPDATE cursos SET logo='" . $nomeLogo . "' WHERE idCurso=" . $idCurso . ";"; 

											if(!BancoDados::query($strQuery, $conexao)){
												$strMensagem1	=	'Não foi possível armazenar o Logo em nosso Banco de Dados.';
												$strMensagem2	=	'Você pode tentar reenviar o Logo na edição do seu curso.';
												$_SESSION['constructore']['mensagens']['erroSalvarLogo1']	=	$strMensagem1;	
												$_SESSION['constructore']['mensagens']['erroSalvarLogo2']	=	$strMensagem2;
											}
											
									}
									else{
										$strMensagem1	=	'Não foi possível armazenar o Logo em nosso Banco de Dados.';
										$strMensagem2	=	'Você pode tentar reenviar o Logo na edição do seu curso.';
										$_SESSION['constructore']['mensagens']['erroSalvarLogo1']	=	$strMensagem1;	
										$_SESSION['constructore']['mensagens']['erroSalvarLogo2']	=	$strMensagem2;
									}
									
								}
								
								BancoDados::desconectaBancoDados($conexao);
								$strMensagem	=	'O Passo 1 da criação do seu curso foi salvo com sucesso.';
								$_SESSION['constructore']['mensagens']['sucessoCriarCurso']	=	$strMensagem;
								$cursoConstrucao	=	new Curso($idCurso);
								if($cursoConstrucao->getIdCurso() == null){
									$strMensagem	=	'Porém, não é possível continuar a criação de seu curso neste momento.';
									$strMensagem2	=	'Você pode ativar a edição do mesmo em <a href="' . escreveLink(array("meuscursos","desenvolvimento")) . '">Meus cursos em desenvolvimento</a>.';
									$_SESSION['constructore']['mensagens']['sucessoCriarCurso1']	=	$strMensagem;
									$_SESSION['constructore']['mensagens']['sucessoCriarCurso2']	=	$strMensagem2;
									return true;
								}
								$usuario	=	unserialize($_SESSION['constructore']['usuario']);
								$turmas	=	array();
								array_push($turmas, array('idTurma' => $idTurma, 'nomeTurma' => null, 'funcaoUsuario' => 'professor', 'ultimoAcesso' => date('Y-m-d H:i:s', time()), 'autorizado' => 1));						
								$usuario->adicionaCurso($idCurso, $strCurso, $idUsuario, $cursoConstrucao->getLogo(), $intInicioCursoAno . '-' . $intInicioCursoMes . '-' . $intInicioCursoDia, $intTerminoCursoAno . '-' . $intTerminoCursoMes . '-' . $intTerminoCursoDia, 0, $turmas);
								$_SESSION['constructore']['usuario']	=	serialize($usuario);
								$_SESSION['constructore']['criarCurso']	=	serialize($cursoConstrucao);
								return true;
							}
							else{
								BancoDados::desconectaBancoDados($conexao);
								$strMensagemErro	=	'Desculpe-nos, houve um erro ao salvar seu curso no sistema.';
								$strMensagemErro2	=	'Por favor tente novamente mais tarde.';
								$strMensagemErro3	=	'Caso o problema persista contate-nos através do <a href="'. escreveLink(array("suporte")) .'">Suporte Técnico</a>.';
								$_SESSION['constructore']['mensagens']['erroCriarCurso']	=	$strMensagemErro;
								$_SESSION['constructore']['mensagens']['erroCriarCurso2']	=	$strMensagemErro2;
								$_SESSION['constructore']['mensagens']['erroCriarCurso3']	=	$strMensagemErro3;
								return false;
							}	
						}
						else{
							BancoDados::desconectaBancoDados($conexao);
							$strMensagemErro	=	'Desculpe-nos, houve um erro ao salvar seu curso no sistema.';
							$strMensagemErro2	=	'Por favor tente novamente mais tarde.';
							$strMensagemErro3	=	'Caso o problema persista contate-nos através do <a href="'. escreveLink(array("suporte")) .'">Suporte Técnico</a>.';
							$_SESSION['constructore']['mensagens']['erroCriarCurso']	=	$strMensagemErro;
							$_SESSION['constructore']['mensagens']['erroCriarCurso2']	=	$strMensagemErro2;
							$_SESSION['constructore']['mensagens']['erroCriarCurso3']	=	$strMensagemErro3;
							return false;
						}
					}
					else{
						BancoDados::desconectaBancoDados($conexao);
						$strMensagemErro	=	'Desculpe-nos, houve um erro ao salvar seu curso no sistema.';
						$strMensagemErro2	=	'Por favor tente novamente mais tarde.';
						$strMensagemErro3	=	'Caso o problema persista contate-nos através do <a href="'. escreveLink(array("suporte")) .'">Suporte Técnico</a>.';
						$_SESSION['constructore']['mensagens']['erroCriarCurso']	=	$strMensagemErro;
						$_SESSION['constructore']['mensagens']['erroCriarCurso2']	=	$strMensagemErro2;
						$_SESSION['constructore']['mensagens']['erroCriarCurso3']	=	$strMensagemErro3;
						return false;
					}
				}
				else{
					BancoDados::desconectaBancoDados($conexao);
					$strMensagemErro	=	'Desculpe-nos, houve um erro ao salvar seu curso no sistema.';
					$strMensagemErro2	=	'Por favor tente novamente mais tarde.';
					$strMensagemErro3	=	'Caso o problema persista contate-nos através do <a href="'. escreveLink(array("suporte")) .'">Suporte Técnico</a>.';
					$_SESSION['constructore']['mensagens']['erroCriarCurso']	=	$strMensagemErro;
					$_SESSION['constructore']['mensagens']['erroCriarCurso2']	=	$strMensagemErro2;
					$_SESSION['constructore']['mensagens']['erroCriarCurso3']	=	$strMensagemErro3;
					return false;
				}
			}
			else{
				$strMensagemErro	=	'Desculpe-nos, houve um erro ao salvar seu curso no sistema.';
				$strMensagemErro2	=	'Por favor tente novamente mais tarde.';
				$strMensagemErro3	=	'Caso o problema persista contate-nos através do <a href="'. escreveLink(array("suporte")) .'">Suporte Técnico</a>.';
				$_SESSION['constructore']['mensagens']['erroCriarCurso']	=	$strMensagemErro;
				$_SESSION['constructore']['mensagens']['erroCriarCurso2']	=	$strMensagemErro2;
				$_SESSION['constructore']['mensagens']['erroCriarCurso3']	=	$strMensagemErro3;
				return false;
			}
			
		}
		else{
			return false;
		}
	}
	
	
	
	public static function editarPasso1($idCurso, $strCurso, $strNivelCurso, $intAreaConhecimento, $intInicioMatriculaDia, $intInicioMatriculaMes, $intInicioMatriculaAno, $intTerminoMatriculaDia, $intTerminoMatriculaMes, $intTerminoMatriculaAno, $intInicioCursoDia, $intInicioCursoMes, $intInicioCursoAno, $intTerminoCursoDia, $intTerminoCursoMes, $intTerminoCursoAno, $intVagas, $strPublicoAlvo, $strObjetivos, $strEmenta, $strOrientacoesAlunos, $strCronograma, $arquivoLogo, $strLogo, $idUsuario){
		if (Curso::validaPasso1($strCurso, $strNivelCurso, $intAreaConhecimento, $intInicioMatriculaDia, $intInicioMatriculaMes, $intInicioMatriculaAno, $intTerminoMatriculaDia, $intTerminoMatriculaMes, $intTerminoMatriculaAno, $intInicioCursoDia, $intInicioCursoMes, $intInicioCursoAno, $intTerminoCursoDia, $intTerminoCursoMes, $intTerminoCursoAno, $intVagas, $strPublicoAlvo, $strObjetivos, $strEmenta, $strOrientacoesAlunos, $strCronograma, $arquivoLogo, $strLogo)){			
			$strQuery	=	"UPDATE cursos set nome = '" .$strCurso. "', nivel = '" . $strNivelCurso . "', idArea = " . $intAreaConhecimento . ", inicioMatricula= '". $intInicioMatriculaAno . "-" . $intInicioMatriculaMes . "-" . $intInicioMatriculaDia ."', terminoMatricula = '". $intTerminoMatriculaAno . "-" . $intTerminoMatriculaMes . "-" . $intTerminoMatriculaDia ."', inicioCurso = '". $intInicioCursoAno . "-" . $intInicioCursoMes . "-" . $intInicioCursoDia ."', terminoCurso = '". $intTerminoCursoAno . "-" . $intTerminoCursoMes . "-" . $intTerminoCursoDia ."', vagas = " . $intVagas . ", publicoAlvo = '" . $strPublicoAlvo . "', objetivos = '" . $strObjetivos . "', ementa = '" . $strEmenta . "', orientacao = '" . $strOrientacoesAlunos . "', cronograma = '" . $strCronograma . "' WHERE idCurso = " . $idCurso . ";";
			/*
			 * Salvando o Curso no Banco de Dados.
			 */
			if(!BancoDados::query($strQuery)){
				return false;
			}
			
			$cursoConstrucao	=	unserialize($_SESSION['constructore']['criarCurso']);
			$nomeLogo = null;
			if ($arquivoLogo){
				$tmpLogo		=	$cursoConstrucao->getLogo();
				unlink(__CAMINHO_LOGO_CURSO__ . $tmpLogo);
				$extensao		=	array_pop(explode('.', $strLogo));
				$nomeLogo		=	'curso' . $idCurso . '.' . $extensao;
				$caminhoLogo	=	__CAMINHO_LOGO_CURSO__ . $nomeLogo;
				
				if (move_uploaded_file($arquivoLogo['tmp_name'], $caminhoLogo)){
						$strQuery	=	"UPDATE cursos SET logo='" . $nomeLogo . "' WHERE idCurso=" . $idCurso . ";"; 

						if(!BancoDados::query($strQuery)){
							$strMensagem1	=	'Não foi possível armazenar o Logo em nosso Banco de Dados.';
							$strMensagem2	=	'Você pode tentar reenviar o Logo na edição do seu curso.';
							$_SESSION['constructore']['mensagens']['erroSalvarLogo1']	=	$strMensagem1;	
							$_SESSION['constructore']['mensagens']['erroSalvarLogo2']	=	$strMensagem2;
						}
						
				}
				else{
					$nomeLogo = null;
					$strMensagem1	=	'Não foi possível armazenar o Logo em nosso Banco de Dados.';
					$strMensagem2	=	'Você pode tentar reenviar o Logo na edição do seu curso.';
					$_SESSION['constructore']['mensagens']['erroSalvarLogo1']	=	$strMensagem1;	
					$_SESSION['constructore']['mensagens']['erroSalvarLogo2']	=	$strMensagem2;
				}
				
			}
			$strMensagem	=	'O Passo 1 da criação do seu curso foi alterado com sucesso.';
			$_SESSION['constructore']['mensagens']['sucessoCriarCurso']	=	$strMensagem;
			$usuario	=	unserialize($_SESSION['constructore']['usuario']);
			
			$cursos	=	$usuario->getCursos();
			$turmas =	$cursos[$idCurso]['turmas'];
			$usuario->adicionaCurso($idCurso, $strCurso, $idUsuario, $cursoConstrucao->getLogo(), $intInicioCursoAno . '-' . $intInicioCursoMes . '-' . $intInicioCursoDia, $intTerminoCursoAno . '-' . $intTerminoCursoMes . '-' . $intTerminoCursoDia, 0, $turmas);
			
			$_SESSION['constructore']['usuario']	=	serialize($usuario);
			
			
			
			$cursoConstrucao->setNome($strCurso);
			$cursoConstrucao->setNivel($strNivelCurso);
			$cursoConstrucao->setAreaConhecimento($intAreaConhecimento);
			$cursoConstrucao->setInicioMatricula($intInicioMatriculaAno . "-" . $intInicioMatriculaMes . "-" . $intInicioMatriculaDia);
			$cursoConstrucao->setTerminoMatricula($intTerminoMatriculaAno . "-" . $intTerminoMatriculaMes . "-" . $intTerminoMatriculaDia);
			$cursoConstrucao->setInicioCurso($intInicioCursoAno . "-" . $intInicioCursoMes . "-" . $intInicioCursoDia);
			$cursoConstrucao->setTerminoCurso($intTerminoCursoAno . "-" . $intTerminoCursoMes . "-" . $intTerminoCursoDia);
			$cursoConstrucao->setVagas($intVagas);
			$cursoConstrucao->setPublicoAlvo($strPublicoAlvo);
			$cursoConstrucao->setObjetivos($strObjetivos);
			$cursoConstrucao->setEmenta($strEmenta);
			$cursoConstrucao->setOrientacoes($strOrientacoesAlunos);
			$cursoConstrucao->setCronograma($strCronograma);
			$cursoConstrucao->setLogo($nomeLogo);
			
			$_SESSION['constructore']['criarCurso']	=	serialize($cursoConstrucao);
			return true;
		}
		else{
			return false;
		}
	}

	
	
	
	/**
	 * 
	 * @return 
	 * @param object $exibirGlossario
	 * @param object $exibirLinks
	 * @param object $exibirBibliografia
	 * @param object $exibirAvisos
	 * @param object $exibirForum
	 * @param object $exibirEmail
	 * @param object $exibirChat
	 */
	public static function salvarPasso3($cursoConstrucao, $exibirGlossario, $exibirLinks, $exibirBibliografia, $exibirAvisos, $exibirForum, $exibirEmail, $exibirChat) {
		
		$idCurso 	=	$cursoConstrucao->getIdCurso();
		$strQuery	=	"UPDATE cursos SET exibirGlossario = " . intval($exibirGlossario) . ", exibirLinks = " . intval($exibirLinks) . ", exibirBibliografia = " . intval($exibirBibliografia) . ", exibirAvisos = " . intval($exibirAvisos) . ", exibirForum = " . intval($exibirForum) . ", exibirEmail = " . intval($exibirEmail) . ", exibirChat = " . intval($exibirChat) . " WHERE idCurso = " . $idCurso . ";";
		if(BancoDados::query($strQuery)){
			$cursoConstrucao->setExibirGlossario($exibirGlossario);
			$cursoConstrucao->setExibirLinks($exibirLinks);
			$cursoConstrucao->setExibirBibliografia($exibirBibliografia);
			$cursoConstrucao->setExibirAvisos($exibirAvisos);
			$cursoConstrucao->setExibirForum($exibirForum);
			$cursoConstrucao->setExibirEmail($exibirEmail);
			$cursoConstrucao->setExibirChat($exibirChat);
			$strMensagem	=	'O Passo 3 da criação do seu curso foi salvo com sucesso.';
			$_SESSION['constructore']['mensagens']['sucessoCriarCurso']	=	$strMensagem;
			$_SESSION['constructore']['criarCurso']	=	serialize($cursoConstrucao);
			return true;
		}
		else{
			return false;
		}	
	}
	
	public static function salvarPasso6($idCurso, $liberarEmail, $liberarEndereco, $liberarTelefone, $liberarCurso) {
		if (intval($liberarCurso) == 1) {
			$strQuery	=	"UPDATE cursos SET liberado = 1 WHERE idCurso = " . $idCurso . ";";
			if (!BancoDados::query($strQuery)) return false;
		}
		$cursoConstrucao 	=	unserialize($_SESSION['constructore']['criarCurso']);
		$cursoConstrucao->setLiberado(true);
		$usuario	=	unserialize($_SESSION['constructore']['usuario']);
		$cursos		=	$usuario->getCursos();
		$cursos[$idCurso]['liberado']	=	1;
		$usuario->setCursos($cursos);
		
		$strQuery	=	"UPDATE usuariosTurmas, turmas SET exibirEmailProfessor = " . intval($liberarEmail) . ", exibirEnderecoProfessor = " . intval($liberarEndereco) . ", exibirTelefoneProfessor = " . intval($liberarTelefone) . " WHERE usuariosTurmas.idTurma = turmas.idTurma and turmas.idCurso = " . $idCurso . ";";
		if (!BancoDados::query($strQuery)) return false;
		
		$_SESSION['constructore']['criarCurso']	=	serialize($cursoConstrucao);
		$_SESSION['constructore']['usuario']	=	serialize($usuario);
		$strMensagem	=	"Seu Curso foi liberado com sucesso!";
		$_SESSION['constructore']['mensagens']['sucessoLiberarCurso']	=	$strMensagem;
		return true;
	}
	
	 /**
     * Verifica se os dados inseridos no formulario de criacao do curso do passo 1 sao validos
     * @return bool
     * @param string $strCurso
     * @param int $intInicioMatriculaDia
     * @param int $intInicioMatriculaMes
     * @param int $intInicioMatriculaAno
     * @param int $intTerminoMatriculaDia
     * @param int $intTerminoMatriculaMes
     * @param int $intTerminoMatriculaAno
     * @param int $intInicioCursoDia
     * @param int $intInicioCursoMes
     * @param int $intInicioCursoAno
     * @param int $intTerminoCursoDia
     * @param int $intTerminoCursoMes
     * @param int $intTerminoCursoAno
     * @param int $intVagas
     * @param string $strPublicoAlvo
     * @param string $strObjetivos
     * @param string $strEmenta
     * @param string $strOrientacoesAlunos
     * @param string $strCronograma
     * @param file $arquivoLselecionarogo
     * @param string $strLogo
     */
    public static  function validaPasso1($strCurso, $strNivelCurso, $intAreaConhecimento, $intInicioMatriculaDia, $intInicioMatriculaMes, $intInicioMatriculaAno, $intTerminoMatriculaDia, $intTerminoMatriculaMes, $intTerminoMatriculaAno, $intInicioCursoDia, $intInicioCursoMes, $intInicioCursoAno, $intTerminoCursoDia, $intTerminoCursoMes, $intTerminoCursoAno, $intVagas, $strPublicoAlvo, $strObjetivos, $strEmenta, $strOrientacoesAlunos, $strCronograma, $arquivoLogo, $strLogo) {
        $validou    =    true;
       
	   /*
         * Valida o nivel do Curso
         */
       
        if (!validaAlfaNumerico($strNivelCurso, __TAM_NIVEL_CURSO__) || $strNivelCurso == '--') {
            $validou             =    false;
            $strMensagemErro    =    'Preencha corretamente o campo <span class="negrito">Nível do Curso</span>.';
            $_SESSION['constructore']['mensagens']['erroNivelCurso']    =    $strMensagemErro;   
        }
		
		/*
         * Valida o Area de Conhecimento do Curso
         */
       
        if (!validaNumero($intAreaConhecimento)) {
            $validou             =    false;
            $strMensagemErro    =    'Preencha corretamente o campo <span class="negrito">Área de Conhecimento</span>.';
            $_SESSION['constructore']['mensagens']['erroAreaConhecimento']    =    $strMensagemErro;   
        }
		
        /*
         * Valida o nome do Curso
         */
       
        if (!validaAlfaNumerico($strCurso, __TAM_NOME_CURSO__)) {
            $validou             =    false;
            $strMensagemErro    =    'Preencha corretamente o campo <span class="negrito">Curso</span>.';
            $_SESSION['constructore']['mensagens']['erroCurso']    =    $strMensagemErro;   
        }
       
        /*
         * Valida o inicio da matricula
         */
       
        if (!validaData($intInicioMatriculaDia, $intInicioMatriculaMes, $intInicioMatriculaAno)) {
            $validou             =    false;
            $strMensagemErro    =    'Preencha corretamente o campo <span class="negrito">Início da Matrícula</span>.';
            $_SESSION['constructore']['mensagens']['erroInicioMatricula']    =    $strMensagemErro;   
        }
        else {
            $dataAtual    =    date('Y-m-d',	time());
            $dataAtual     =    explode('-', $dataAtual);
           
            if (comparaDatas($dataAtual[2], $dataAtual[1], $dataAtual[0], $intInicioMatriculaDia, $intInicioMatriculaMes, $intInicioMatriculaAno) < 0) {
                $validou             =    false;
                $strMensagemErro    =    'A data de <span class="negrito">Início da Matrícula</span> não pode ser anterior à data de hoje.';
                $_SESSION['constructore']['mensagens']['erroInicioMatricula']    =    $strMensagemErro;
            }
        }
       
        /*
         * Valida o termino da matricula
         */
       
        if (!validaData($intTerminoMatriculaDia, $intTerminoMatriculaMes, $intTerminoMatriculaAno)) {
            $validou             =    false;
            $strMensagemErro    =    'Preencha corretamente o campo <span class="negrito">Término da Matrícula</span>.';
            $_SESSION['constructore']['mensagens']['erroTerminoMatricula']    =    $strMensagemErro;   
        }
        else {
            if (comparaDatas($intInicioMatriculaDia, $intInicioMatriculaMes, $intInicioMatriculaAno, $intTerminoMatriculaDia, $intTerminoMatriculaMes, $intTerminoMatriculaAno) < 0) {
                $validou             =    false;
                $strMensagemErro    =    'A data de <span class="negrito">Término da Matrícula</span> não pode ser anterior à data de <span class="negrito">Início da Matrícula</span>.';
                $_SESSION['constructore']['mensagens']['erroTerminoMatricula']    =    $strMensagemErro;
            }
        }
       
        /*
         * Valida o inicio do curso
         */
       
        if (!validaData($intInicioCursoDia, $intInicioCursoMes, $intInicioCursoAno)) {
            $validou             =    false;
            $strMensagemErro    =    'Preencha corretamente o campo <span class="negrito">Início do Curso</span>.';
            $_SESSION['constructore']['mensagens']['erroInicioCurso']    =    $strMensagemErro;   
        }
        else {      
            if (comparaDatas($intInicioMatriculaDia, $intInicioMatriculaMes, $intInicioMatriculaAno, $intInicioCursoDia, $intInicioCursoMes, $intInicioCursoAno) < 0) {
                $validou             =    false;
                $strMensagemErro    =    'A data de <span class="negrito">Início do Curso</span> não pode ser anterior à data de <span class="negrito">Início da Matrícula</span>.';
                $_SESSION['constructore']['mensagens']['erroInicioCurso']    =    $strMensagemErro;
            }
        }
       
        /*
         * Valida o termino do curso
         */
       
        if (!validaData($intTerminoCursoDia, $intTerminoCursoMes, $intTerminoCursoAno)) {
            $validou             =    false;
            $strMensagemErro    =    'Preencha corretamente o campo <span class="negrito">Término do Curso</span>.';
            $_SESSION['constructore']['mensagens']['erroTerminoCurso']    =    $strMensagemErro;   
        }
        else {
            if (comparaDatas($intInicioCursoDia, $intInicioCursoMes, $intInicioCursoAno, $intTerminoCursoDia, $intTerminoCursoMes, $intTerminoCursoAno) < 0) {
                $validou             =    false;
                $strMensagemErro    =    'A data de <span class="negrito">Término do Curso</span> não pode ser anterior à data de <span class="negrito">Início do Curso</span>.';
                $_SESSION['constructore']['mensagens']['erroTerminoCurso']    =    $strMensagemErro;
            }
			if (comparaDatas($intTerminoMatriculaDia, $intTerminoMatriculaMes, $intTerminoMatriculaAno, $intTerminoCursoDia, $intTerminoCursoMes, $intTerminoCursoAno) < 0) {
                $validou             =    false;
                $strMensagemErro    =    'A data de <span class="negrito">Término do Curso</span> não pode ser anterior à data de <span class="negrito">Término da Matrícula</span>.';
                $_SESSION['constructore']['mensagens']['erroTerminoCurso2']    =    $strMensagemErro;
            }
        }
       
        /*
         * Valida o numero de vagas
         */
       
        if (($intVagas <= 0 || !validaNumero($intVagas)) && $intVagas != "") {
            $validou             =    false;
            $strMensagemErro    =    'Preencha corretamente o campo <span class="negrito">Número de Vagas</span>.';
            $_SESSION['constructore']['mensagens']['erroNumeroVagas']    =    $strMensagemErro;
        }
       
        /*
         * Validacao do Publico Alvo
         */

        if (!validaAlfaNumerico($strPublicoAlvo, __TAM_PUBLICO_ALVO_CURSO__) && $strPublicoAlvo    !=    ''){
            $validou            =    false;
            $strMensagemErro    =    'Preencha corretamente o campo <span class="negrito">Público Alvo</span>.';
            $_SESSION['constructore']['mensagens']['erroPublicoAlvo']    =    $strMensagemErro;   
        }
       
        /*
         * Validacao de Objetivos
         */

        if (!validaAlfaNumerico($strObjetivos, __TAM_OBJETIVOS_CURSO__) && $strObjetivos    !=    ''){
            $validou            =    false;
            $strMensagemErro    =    'Preencha corretamente o campo <span class="negrito">Objetivos</span>.';
            $_SESSION['constructore']['mensagens']['erroObjetivos']    =    $strMensagemErro;   
        }
       
        /*
         * Validacao de Ementa
         */

        if (!validaAlfaNumerico($strEmenta, __TAM_EMENTA_CURSO__) && $strEmenta    !=    ''){
            $validou            =    false;
            $strMensagemErro    =    'Preencha corretamente o campo <span class="negrito">Ementa</span>.';
            $_SESSION['constructore']['mensagens']['erroEmenta']    =    $strMensagemErro;   
        }
       
        /*
         * Validacao de Orientacoes
         */

        if (!validaAlfaNumerico($strOrientacoesAlunos, __TAM_ORIENTACOES_ALUNOS_CURSO__) && $strOrientacoesAlunos    !=    ''){
            $validou            =    false;
            $strMensagemErro    =    'Preencha corretamente o campo <span class="negrito">Orientações aos Alunos</span>.';
            $_SESSION['constructore']['mensagens']['erroOrientacoesAlunos']    =    $strMensagemErro;   
        }
       
        /*
         * Validacao de Cronograma
         */

        if (!validaAlfaNumerico($strCronograma, __TAM_CRONOGRAMA_CURSO__) && $strCronograma    !=    ''){
            $validou            =    false;
            $strMensagemErro    =    'Preencha corretamente o campo <span class="negrito">Cronograma</span>.';
            $_SESSION['constructore']['mensagens']['erroCronograma']    =    $strMensagemErro;   
        }
       
        /*
         * Validacao de Logo
         */
       
        if (!validaFoto($strLogo) && $strLogo != '') {
            $validou            =    false;
            $strMensagemErro    =    'É necessário escolher um <span class="negrito">Logo</span> no formato gif, jpg, jpeg, png ou bmp.';
            $_SESSION['constructore']['mensagens']['erroLogo']    =    $strMensagemErro;
        }
        else{
            if ($arquivoLogo != null){
                if ($arquivoLogo['size']/1024    >    __TAM_LOGO_CURSO__){
                    $validou            =    false;
                    $strMensagemErro    =    'O tamanho máximo para upload de <span class="negrito">Logo</span> é de 1MB.';
                    $_SESSION['constructore']['mensagens']['erroLogo']    =    $strMensagemErro;   
                }
                else{
                    /*
                     * Verifica se a foto validou, mas houve algum outro erro de validacao.
                     * Seta uma mensagem pedindo ao usuario que reenvie a foto, pois a mesma nao e salva se houver um erro.
                     */
                    if(!$validou){
                        $strMensagemErro    =    'Você deve fazer upload do <span class="negrito">Logo</span> novamente.';
                        $_SESSION['constructore']['mensagens']['erroLogo']    =    $strMensagemErro;   
                    }
                }
            }
        }
        return    $validou;
    }
	
	public static function apagar($idCurso){
		$strQuery 	=	"UPDATE cursos SET apagado=1 WHERE idCurso=" . $idCurso . ";";
		return BancoDados::query($strQuery);
	}
	
	public static function reativar($idCurso){
		$strQuery 	=	"UPDATE cursos SET apagado=0 WHERE idCurso=" . $idCurso . ";";
		return BancoDados::query($strQuery);
	}
	
	public static function removerBD($idCurso){
		$strQuery	=	"SELECT idTurma FROM turmas WHERE idCurso = " . $idCurso . ";";
		if ($resultado	=	BancoDados::query($strQuery)){
			foreach($resultado as $turma){
				$strQuery 	=	"DELETE FROM usuariosTurmas WHERE idTurma = " . $turma['idTurma'] . ";";
				if (!BancoDados::query($strQuery)) return false;
			}
			$strQuery 	=	"DELETE FROM turmas WHERE idCurso=" . $idCurso . ";";
			if (!BancoDados::query($strQuery)) return false;
			
			$strQuery 	=	"DELETE FROM cursos WHERE idCurso=" . $idCurso . ";";
			if (!BancoDados::query($strQuery)) return false;
			
			return true;
		}
		else {
			return false;
		}
	}
	
	public static function buscaSimples($filtro, $ordena, $ordem, $paginaAtual, $strBusca){
		$strQuery		=	"SELECT cursos.*, usuarios.idUsuario as idProfessor, usuarios.nome as nomeProfessor FROM cursos, usuarios WHERE usuarios.idUsuario = cursos.idDono";
	
		switch($filtro){
			case "todos":
				break;
			case "desenvolvimento":
				$strQuery		.=	" AND cursos.apagado=0 AND (cursos.inicioCurso > NOW() OR cursos.liberado=0)";
				break;
			case "andamento":
				$strQuery		.=	" AND cursos.liberado=1 AND cursos.apagado=0 AND cursos.inicioCurso <= NOW() and cursos.terminoCurso >= NOW()";
				break;
			case "concluidos":
				$strQuery		.=	" AND cursos.liberado=1 AND cursos.apagado=0 AND cursos.terminoCurso < NOW()";
				break;
			case "apagados":
				$strQuery		.=	" AND cursos.apagado=1";
				break;
			case "busca":
				$palavrasBusca	=	explode('-', decodificaString($strBusca));
				foreach($palavrasBusca as $chave => $palavraBusca){
					$strQuery	=	"SELECT * FROM (" . $strQuery . ") as busca" . $chave . " WHERE (nome REGEXP '.*" . $palavraBusca . ".*' OR nomeProfessor REGEXP '.*" . $palavraBusca . ".*')";
				}
				break;
			default:
				redireciona(array("404"));
				exit;
		}
		
		switch($ordena){
			case "ordenanome":
				$strQuery		.=	" ORDER BY nome " . $ordem;
				break;
			case "ordenaprofessor":
				$strQuery		.=	" ORDER BY nomeProfessor " . $ordem;
				break;
			case "ordenainicio":
				$strQuery		.=	" ORDER BY inicioCurso " . $ordem;
				break;
			case "ordenatermino":
				$strQuery		.=	" ORDER BY terminoCurso " . $ordem;
				break;
			default:
				redireciona(array("404"));
				exit;
		}
		
		$strQueryQtd 	=	'SELECT COUNT(*) AS qtdCursos FROM (' . $strQuery . ') as tabela;';
		$qtdCursos		=	BancoDados::query($strQueryQtd);
		
		$qtdCursos 		=	$qtdCursos[0]['qtdCursos'];
		$qtdPaginas		=	ceil($qtdCursos / __QTD_ITENS_LISTA__);
		if ($qtdPaginas == 0){
			$qtdPaginas = 1;
		}
		
		if ($paginaAtual == 0){
			redireciona(array('404'));
			exit;
		}
		else{
			if ($paginaAtual > $qtdPaginas){
				$paginaAtual = $qtdPaginas;
			}
		}
		
				
		$strQuery 	.=	" LIMIT " . __QTD_ITENS_LISTA__ . " OFFSET " . (($paginaAtual-1) * __QTD_ITENS_LISTA__) . ";";
		$listaCursos	=	BancoDados::query($strQuery);
		
		if(!is_array($listaCursos)){
			redireciona($_SESSION['constructore']['URLOrigem']);
			exit();
		}
		else{
			foreach($listaCursos as $chave => $curso){
				$idCurso	=	$curso['idCurso'];
				$strQuery 	=	"SELECT COUNT(idUsuario) as inscritos FROM usuariosTurmas, turmas WHERE turmas.idTurma = usuariosTurmas.idTurma AND turmas.idCurso=" . $idCurso . " AND funcaoUsuario = 'aluno';";
				$inscritos = BancoDados::query($strQuery);
				if(is_array($inscritos)){
					$listaCursos[$chave]['inscritos']	=	$inscritos[0]['inscritos'];
				}
				else{
					redireciona($_SESSION['constructore']['URLOrigem']);
					exit;
				}
			}
		}
		
		return array("listaCursos" => $listaCursos, "qtdCursos" => $qtdCursos, "qtdPaginas" => $qtdPaginas);

	}
	
	public static function buscaAvancada($ordena, $ordem, $paginaAtual, $strCurso, $intLayout, $strNomeProfessor, $boolLiberarEmail, $boolLiberarEndereco, $boolLiberarTelefone, $strNivel, $intArea, $strSituacao, $strInicioCurso1, $strInicioCurso2, $strTerminoCurso1, $strTerminoCurso2, $strDataCriacao1, $strDataCriacao2, $boolGlossario, $boolLinks, $boolBibliografia, $boolAvisos, $boolForum, $boolEmail, $boolChat){
		
		$strQuery		=	"SELECT cursos.*, usuarios.idUsuario as idProfessor, usuarios.nome as nomeProfessor FROM cursos, usuarios, turmas, usuariosTurmas WHERE cursos.idDono = usuarios.idUsuario AND usuariosTurmas.idUsuario = cursos.idDono AND turmas.idCurso = cursos.idCurso AND turmas.idTurma = usuariosTurmas.idTurma";
		
		if ($strNivel != '') {
			$strQuery .= " AND nivel = '" . $strNivel . "'";
		}
		
		if ($intArea != '') {
			$strQuery .= " AND idArea = " . $intArea;
		}
		
		if ($intLayout != '') {
			$strQuery .= " AND idLayout = " . $intLayout;
		}
		
		if ($boolLiberarEmail == "true") {
			$strQuery .= " AND usuariosTurmas.exibirEmailProfessor = true";
		}
		
		if ($boolLiberarEndereco == "true") {
			$strQuery .= " AND usuariosTurmas.exibirEnderecoProfessor = true";
		}
		
		if ($boolLiberarTelefone == "true") {
			$strQuery .= " AND usuariosTurmas.exibirTelefoneProfessor = true";
		}
		
		switch($strSituacao){
			case "todos":
				break;
			case "desenvolvimento":
				$strQuery		.=	" AND apagado=0 AND (liberado=0";
				break;
			case "andamento":
				$strQuery		.=	" AND liberado=1 AND apagado=0";
				break;
			case "concluidos":
				$strQuery		.=	" AND liberado=1 AND apagado=0";
				break;
			case "apagados":
				$strQuery		.=	" AND apagado=1";
				break;
			default:
				redireciona(array("404"));
				exit;
		}
		
		if ($strInicioCurso1 != ''){
			if ($strSituacao == "desenvolvimento") {
				$strQuery		.=	" OR inicioCurso >= '" . $strInicioCurso1 ."')";
			}
			else {
				$strQuery		.=	" AND inicioCurso >= '" . $strInicioCurso1 ."'";
			}
		}
		
		if ($strInicioCurso2 != ''){
			$strQuery		.=	" AND inicioCurso <= '" . $strInicioCurso2 ." 23:59:59'";
		}
				
		if ($strTerminoCurso1 != ''){
			$strQuery		.=	" AND terminoCurso >= '" . $strTerminoCurso1 ."'";
		}
		
		if ($strTerminoCurso2 != ''){
			$strQuery		.=	" AND terminoCurso <= '" . $strTerminoCurso2 ." 23:59:59'";
		}
		
		if ($strDataCriacao1 != ''){	
			$strQuery		.=	" AND dataCriacao >= '" . $strDataCriacao1 ."'";
		}
		
		if ($strDataCriacao2 != ''){
			$strQuery		.=	" AND dataCriacao <= '" . $strDataCriacao2 ." 23:59:59'";
		}
		
		if($boolGlossario == "true"){
			$strQuery		.=	" AND exibirGlossario = true";
		}
		
		if($boolLinks == "true"){
			$strQuery		.=	" AND exibirLinks = true";
		}
		
		if($boolBibliografia == "true"){
			$strQuery		.=	" AND exibirBibliografia = true";
		}
		
		if($boolAvisos == "true"){
			$strQuery		.=	" AND exibirAvisos = true";
		}
		
		if($boolEmail == "true"){
			$strQuery		.=	" AND exibirEmail = true";
		}
		
		if($boolForum == "true"){
			$strQuery		.=	" AND exibirForum = true";
		}
		
		if($boolChat == "true"){
			$strQuery		.=	" AND exibirChat = true";
		}
	
		$chave 	=	0;
		
		if ($strCurso != ''){
			$palavrasBusca	=	explode('-', decodificaString($strCurso));
			
			foreach($palavrasBusca as $palavraBusca){
				$strQuery	=	"SELECT * FROM (" . $strQuery . ") as busca" . $chave . " WHERE nome REGEXP '.*" . $palavraBusca . ".*'";
				$chave++;
			}
			
		}
		
		if ($strNomeProfessor != ''){
			$palavrasBusca	=	explode('-', decodificaString($strNomeProfessor));
			
			foreach($palavrasBusca as $palavraBusca){
				$strQuery	=	"SELECT * FROM (" . $strQuery . ") as busca" . $chave . " WHERE nomeProfessor REGEXP '.*" . $palavraBusca . ".*'";
				$chave++;
			}
			
		}
		
		switch($ordena){
			case "ordenanome":
				$strQuery		.=	" ORDER BY nome " . $ordem;
				break;
			case "ordenaprofessor":
				$strQuery		.=	" ORDER BY nomeProfessor " . $ordem;
				break;
			case "ordenainicio":
				$strQuery		.=	" ORDER BY inicioCurso " . $ordem;
				break;
			case "ordenatermino":
				$strQuery		.=	" ORDER BY terminoCurso " . $ordem;
				break;
			default:
				redireciona(array("404"));
				exit;
		}
		
		$strQueryQtd 	=	'SELECT COUNT(*) AS qtdCursos FROM (' . $strQuery . ') AS tabela' . $chave . ';';
		$qtdCursos		=	BancoDados::query($strQueryQtd);
		$qtdCursos 		=	$qtdCursos[0]['qtdCursos'];
		$qtdPaginas		=	ceil($qtdCursos / __QTD_ITENS_LISTA__);
		if ($qtdPaginas == 0){
			$qtdPaginas = 1;
		}
		
		if ($paginaAtual == 0){
			redireciona(array('404'));
			exit;
		}
		else{
			if ($paginaAtual > $qtdPaginas){
				$paginaAtual = $qtdPaginas;
			}
		}
		
		$strQuery 	.=	" LIMIT " . __QTD_ITENS_LISTA__ . " OFFSET " . (($paginaAtual-1) * __QTD_ITENS_LISTA__) . ";";
		$listaCursos	=	BancoDados::query($strQuery);
		
		if(!is_array($listaCursos)){
			redireciona($_SESSION['constructore']['URLOrigem']);
			exit();
		}
		else{
			foreach($listaCursos as $chave => $curso){
				$idCurso	=	$curso['idCurso'];
				$strQuery 	=	"SELECT COUNT(idUsuario) as inscritos FROM usuariosTurmas, turmas WHERE turmas.idTurma = usuariosTurmas.idTurma AND turmas.idCurso=" . $idCurso . " AND funcaoUsuario = 'aluno';";
				$inscritos = BancoDados::query($strQuery);
				if(is_array($inscritos)){
					$listaCursos[$chave]['inscritos']	=	$inscritos[0]['inscritos'];
				}
				else{
					redireciona($_SESSION['constructore']['URLOrigem']);
					exit;
				}
			}
		}
		return array("listaCursos" => $listaCursos, "qtdCursos" => $qtdCursos, "qtdPaginas" => $qtdPaginas);
		
	}
	
	public static function getLayoutsCursos($ordem, $paginaAtual){
		$strQuery	=	"SELECT * FROM layouts ORDER BY nome ". $ordem;
		if($paginaAtual	==	null){
			$strQuery 	.=	';';
			$listaLayouts	=	BancoDados::query($strQuery);
			return $listaLayouts;
		}
		
		$strQueryQtd 	=	'SELECT COUNT(*) AS qtdLayouts FROM (' . $strQuery . ') as tabela;';
		
		$qtdLayouts		=	BancoDados::query($strQueryQtd);
		
		$qtdLayouts 		=	$qtdLayouts[0]['qtdLayouts'];
		$qtdPaginas		=	ceil($qtdLayouts / __QTD_ITENS_LISTA__);
		if ($qtdPaginas == 0){
			$qtdPaginas = 1;
		}
	
		if ($paginaAtual == 0 || $paginaAtual > $qtdPaginas){
			redireciona(array('404'));
			exit;
		}
		
		$strQuery 	.=	" LIMIT " . __QTD_ITENS_LISTA__ . " OFFSET " . (($paginaAtual-1) * __QTD_ITENS_LISTA__) . ";";
		
		$listaLayouts	=	BancoDados::query($strQuery);
	
		if(!is_array($listaLayouts)){
			redireciona($_SESSION['constructore']['URLOrigem']);
			exit();
		}
		else{
			foreach($listaLayouts as $chave => $layout){
				$idLayout	=	$layout['idLayout'];
				$strQuery 	=	"SELECT COUNT(*) as qtdCursos FROM cursos WHERE idLayout=" . $idLayout . ";";
				$qtdCursos = BancoDados::query($strQuery);
				if(is_array($qtdCursos)){
					$listaLayouts[$chave]['qtdCursos']	=	$qtdCursos[0]['qtdCursos'];
				}
				else{
					redireciona($_SESSION['constructore']['URLOrigem']);
					exit;
				}
			}
		}
		
		return array("listaLayouts" => $listaGrupos, "qtdCursos" => $qtdGrupos, "qtdPaginas" => $qtdPaginas);
	}
	
}

?>